As multi-core chips become more popular, their support for multi-threaded applications becomes more important. Hardware transactional memory is one such example. Various research projects have demonstrated that transactional memory can greatly reduce lock contention and hence improve multi-threaded application performance. However, little research has been done on transactional memory to help parallelize programs.